hhkb
네트워크

네트워크이론_03_네트워크 보강 이론

작성자 : Heehyeon Yoo|2025-11-04
# 네트워크# 네트워크 장치# 네트워크 보안# 네트워크 응용# OSI7계층 모델

1. 네트워크와 네트워킹 개념

- 네트워크 (Network): 컴퓨터나 장치들이 리소스(데이터, 파일 등)를 공유하기 위해 케이블이나 무선으로 연결된 '망' 또는 '관계'를 의미함.

  • 네트워킹 (Networking): 해당 네트워크를 통해 데이터를 주고받는 '상호작용' 또는 '행위'를 의미함.
  • 프로토콜 (Protocol): 원활한 네트워킹(상호작용)을 위해 반드시 지켜야 하는 '통신 규약' 또는 '규칙'의 집합임.

네트워크의 기본 구성 요소

  • 호스트 (Host) / 엔드포인트 (End-point): 네트워크를 이용하는 주체(PC, 서버, 스마트폰 등)임.
  • 스위치 (Switch): L2(데이터 링크 계층) 장비로, MAC 주소를 기반으로 로컬 네트워크(LAN) 내에서 데이터를 전송(스위칭)함.
  • 라우터 (Router): L3(네트워크 계층) 장비로, IP 주소를 기반으로 서로 다른 네트워크(WAN) 간의 최적의 '경로를 설정(Routing)'하고 패킷을 전달함.
  • LAN (Local Area Network): 집, 사무실 등 비교적 가까운(Local) 범위의 네트워크임.
  • WAN (Wide Area Network): LAN과 LAN을 연결하는 광범위한(Wide) 논리적 네트워크로, 인터넷이 대표적인 예임.

네트워크 통신의 기본 원리

  • 네트워크 통신은 계층형 구조(Layered Structure)를 기반으로 함. 각 계층은 독립적인 기능을 수행하며, 상위 계층은 하위 계층의 기능에 '존립 의존적'임. (예: L3의 IP 패킷 전송은 L2의 MAC 주소 기반 전송 기능이 있어야만 성립 가능)

2. User mode와 Kernel mode

운영체제의 두 가지 실행 모드

  • 운영체제(OS)는 시스템 자원을 보호하고 안정적으로 관리하기 위해 실행 모드를 유저 모드(User mode)커널 모드(Kernel mode) 두 가지로 분리함. → 응용 프로그램이 직접 하드웨어를 제어하지 못하도록 권한을 구분해, 오류나 악성 코드로부터 시스템 전체가 손상되는 것을 방지하기 위함임.

각 모드의 역할과 특징

  • 유저 모드(User mode):
    • 역할: 사용자가 실행하는 일반 응용 프로그램(웹 브라우저, 게임, 워드 등)이 동작하는 영역임.
    • 특징: 시스템의 핵심 자원(CPU, 메모리, 하드웨어)에 직접 접근할 수 없음. 만약 네트워크 카드(NIC)로 데이터를 보내는 등 하드웨어 접근이 필요하면, 반드시 '커널 모드'에 요청해야 함.
  • 커널 모드(Kernel mode):
    • 역할: 운영체제의 핵심(Kernel)이 동작하는 영역으로, 모든 시스템 자원(CPU, 메모리, 하드웨어)을 직접 제어하고 관리함.
    • 특징: TCP/IP 프로토콜 스택, 네트워크 카드 드라이버 등이 이 모드에서 실행됨. 유저 모드로부터 '시스템 콜(System Call)'이라는 정형화된 요청을 받아, 대신 하드웨어를 제어하고 그 결과를 응용 프로그램에 반환함.

3. OSI 7 계층 모델

  • 네트워크 통신 과정을 7개의 논리적인 단계로 나눈 '개념적' 모델임.

각 계층의 기능과 역할

| 계층 | 이름 | 예시 | 설명 |
| | | | |
| L7 | Application(응용) | HTTP, DNS, FTP | 사용자와 직접 상호작용하는 서비스 |
| L6 | Presentation(표현) | SSL/TLS, JPEG | 데이터 형식 변환, 암호화/복호화 |
| L5 | Session(세션) | TLS, RPC, WebSocket | 응용 프로그램 간의 세션(연결) 수립 및 관리 |
| L4 | Transport(전송) | TCP/UDP, PORT | 종단 간(End-to-End) 데이터 전송 및 분할 |
| L3 | Network(네트워크) | IP Address, ROUTER | 패킷 전송, 경로 설정(라우팅) |
| L2 | Data Link(데이터 링크) | MAC Address, SWITCH | 로컬 네트워크(LAN) 내 프레임 전송 |
| L1 | Physical(물리) | Cable, Electric Signal | 물리적 전송 매체, 0과 1의 비트 전송 |

계층 간 데이터 전달 과정

  • 송신 측(데이터 보내기: 캡슐화)
    1. L7 (응용 계층): 사용자가 '전송' 버튼을 누름 (예: 웹 브라우저에서 google.com 입력).
    2. L6 (표현 계층): 데이터를 표준 형식으로 변환하거나 암호화함.
    3. L5 (세션 계층): 통신 연결(세션)을 관리함.
    4. L4 (전송 계층): 데이터를 세그먼트(Segment) 단위로 쪼갬.
      • 포트 번호(Port)를 붙여서 어떤 프로그램(프로세스)이 보낸 건지 표시함(예: TCP 헤더).
    5. L3 (네트워크 계층): 세그먼트를 패킷(Packet)으로 만듦.
      • IP 주소(최종 목적지/출발지)를 붙임(예: IP 헤더).
    6. L2 (데이터 링크 계층): 패킷을 프레임(Frame)으로 만듦.
      • MAC 주소(다음 장비/출발지)를 붙임(예: 이더넷 헤더).
    7. L1 (물리 계층): 프레임을 0과 1의 전기 신호(비트)로 바꿔서 케이블(랜선)로 쏴줌.
  • 수신 측(데이터 받기: 역캡슐화)
    1. L1 (물리 계층): 케이블로 들어온 전기 신호(비트)를 다시 프레임으로 복원함.
    2. L2 (데이터 링크 계층): 프레임의 MAC 주소를 확인. "어, 이거 나한테 온 거 맞네?"
      • L2 헤더(포장지)를 뜯어내고, 안의 패킷을 L3로 올림.
    3. L3 (네트워크 계층): 패킷의 IP 주소를 확인. "어, 이거 내 IP 맞네?"
      • L3 헤더(포장지)를 뜯어내고, 안의 세그먼트를 L4로 올림.
    4. L4 (전송 계층): 세그먼트의 포트 번호를 확인. "아, 이건 웹 브라우저(80번)가 쓸 데이터구나."
      • 쪼개진 세그먼트들을 순서대로 재조립해서 원본 데이터로 만듦.
    5. L5 (세션 계층): 통신 연결(세션)을 관리함.
    6. L6 (표현 계층): 암호화된 걸 풀거나(복호화) 표준 형식으로 변환함.
    7. L7 (응용 계층): 최종 데이터를 사용자 프로그램(예: 웹 브라우저)에 전달해서 화면에 google.com이 보이게 함.

4. IP 주소와 주소 체계

IPv4 주소 구조

  • 32비트(4byte)로 구성된 논리적 주소임.
    • 이 32비트(bit)는 8비트씩 4덩어리로 나뉘어 있음. (8비트 = 1바이트)
    • 각 8비트 덩어리(옥텟, Octet)를 0부터 255 사이의 10진수로 변환해서 192.168.0.10처럼 점(.)으로 구분해 표시
  • 예: 192.168.0.10주소는 '네트워크 ID(192.168.0)'와 '호스트 ID(10)'로 구분됨.
    • 네트워크 ID: 수많은 컴퓨터들 중에서 내가 속한 '특정 네트워크(망)'를 식별하는 주소 부분
    • 호스트 ID: 그 특정 네트워크 안에서 '개별 컴퓨터(장치)'를 식별하는 주소 부분

서브넷 마스크(Subnet Mask)와 CIDR 표기법

  • 서브넷 마스크: IP 주소와 AND 연산을 하여, 어디까지가 네트워크 ID이고 어디부터가 호스트 ID인지를 구분하는 역할을 함. (예: 255.255.255.0)
  • CIDR (Classless Inter-Domain Routing): 서브넷 마스크를 /비트수로 간결하게 표기하는 방식임. (예: 192.168.0.0/24는 상위 24비트가 네트워크 ID임을 의미)

(추가 학습 내용) DHCP와 ARP
DHCP (Dynamic Host Configuration Protocol): 인터넷 사용에 필요한 4가지 요소(IP 주소, 서브넷 마스크, 게이트웨이 IP, DNS 서버 주소)를 자동으로 할당해주는 프로토콜임.
ARP (Address Resolution Protocol): IP 주소(L3)에 대응하는 MAC 주소(L2)를 알아낼 때 사용하는 프로토콜임. 외부와 통신하려면 게이트웨이의 MAC 주소를 알아야 하며, 이때 ARP를 사용함.

5. 패킷 전송 과정

캡슐화와 역캡슐화(Encapsulation&Decapsulation)

  • 데이터는 송신 측(출발지)에서 수신 측(목적지)으로 가면서 각 계층의 정보(헤더)가 포장지에 싸이듯 덧붙여짐.
  • 캡슐화 (송신 측):
    1. L4 (Transport): 원본 데이터(Stream)가 MSS(최대 세그먼트 크기, 보통 1460 bytes) 단위로 쪼개지고, TCP 헤더(Port 번호 등)가 붙어 세그먼트(Segment)가 됨.
    2. L3 (Network): 세그먼트에 IP 헤더(IP 주소 등)가 붙어 패킷(Packet)이 됨.
    3. L2 (Data Link): 패킷에 이더넷 헤더(MAC 주소 등)가 붙어 프레임(Frame)이 됨.
    4. L1 (Physical): 프레임이 0과 1의 전기 신호로 변환되어 전송됨.
  • 역캡슐화 (수신 측):
    수신 측은 L1부터 L7까지 올라가면서 포장지를 벗겨내듯 헤더를 제거하고 원본 데이터를 복원함.

패킷 생성과 전달 과정

  • 패킷(프레임)이 생성된 후, 목적지 주소를 기반으로 L2와 L3에서 실제 전달이 일어남.
    1. 로컬 통신 (L2 - 같은 네트워크):
      • 송신자가 통신하려는 상대방의 IP 주소가 자신과 같은 네트워크 대역에 있는 경우임.
      • 송신자는 ARP(Address Resolution Protocol)를 브로드캐스트로 전송하여 "이 IP 주소 가진 사람, MAC 주소 좀 알려줘"라고 요청함.
      • 해당 IP를 가진 수신자가 자신의 MAC 주소를 ARP 응답으로 알려줌.
      • 송신자는 이 MAC 주소를 프레임의 '목적지 MAC 주소'로 설정하여 스위치를 통해 직접 전송함.
    2. 원격 통신 (L3 - 다른 네트워크):
      • 송신자가 통신하려는 상대방의 IP 주소가 다른 네트워크 대역(예: 인터넷)에 있는 경우임.
      • 송신자는 패킷을 외부로 내보내기 위해 게이트웨이(라우터)의 도움이 필요함.
      • 송신자는 ARP를 이용해 '게이트웨이의 MAC 주소'를 알아냄.
      • 프레임을 생성할 때, L3 헤더의 '목적지 IP 주소'는 최종 목적지(예: 네이버 서버)로 설정하지만, L2 헤더의 '목적지 MAC 주소'는 게이트웨이(라우터)로 설정함.
      • 게이트웨이(라우터)는 이 프레임을 받고, L2 헤더를 제거(역캡슐화)함.
      • L3 헤더의 '최종 목적지 IP'를 확인하고, 자신의 라우팅 테이블을 참조하여 이 패킷을 다음 라우터로 다시 캡슐화하여 전달함. 이 과정이 목적지에 도달할 때까지 반복됨.

(추가 학습 내용) 네트워크 장애 요소
패킷 전송 과정에서 다음과 같은 장애가 발생할 수 있음.

  • Packet Loss (패킷 손실): 네트워크 혼잡, 장비 불량 등으로 패킷이 중간에 유실되는 현상임.
  • Re-transmission (재전송): (TCP의 경우) 송신자가 패킷을 보낸 후 일정 시간(RTO) 내에 응답(ACK)을 받지 못하면, 패킷이 손실된 것으로 간주하고 동일한 패킷을 다시 전송함.
  • Out-of-Order (순서 어긋남): 패킷들이 서로 다른 경로를 통해 전송될 때, 목적지에 도착하는 순서가 송신 순서와 달라지는 현상임. (TCP는 이를 순서대로 재조립함.)
  • Zero Window (제로 윈도우): 수신 측의 수신 버퍼(데이터 임시 저장 공간)가 가득 차서, "더 이상 데이터를 보내지 말라"고 송신 측에 알리는 상태임.

6. TCP/IP 프로토콜 동작 원리

TCP와 UDP의 특징 및 차이점

  • L4(전송 계층)의 대표적인 두 프로토콜임.

    구분TCPUDP
    연결 방식연결 지향형비연결 지향형
    신뢰성높음(데이터 순서 보장, 오류 검사, 재전송)낮음(순서 보장X, 재전송X)
    특징3-way/4-way Handshake, 혼잡 제어, 흐름 제어빠른 속도, 헤더가 단순함
    데이터 단위세그먼트(Segment)데이터그램(Datagram)
    주요 사용HTTP, FTP, E-mail
    (신뢰성이 중요한 경우)DNS, VoIP, 실시간 스트리밍
    (속도가 중요한 경우)

TCP 연결 과정과 상태 변화

  • 3-way Handshaking (연결 수립):
    1. Client → Server: SYN (접속 요청)
    2. Server → Client: SYN+ACK (요청 수락 및 서버 측 접속 요청)
    3. Client → Server: ACK (서버 요청 수락 및 연결 확립)
  • 4-way Handshaking (연결 종료):
    1. Client → Server: FIN (클라이언트 측 연결 종료 요청)
    2. Server → Client: ACK (종료 요청 수신 확인, 서버는 아직 보낼 데이터 처리)
    3. Server → Client: FIN (서버 측 데이터 처리 완료 및 종료 요청)
    4. Client → Server: ACK (최종 확인), 클라이언트는 혹시 모를 패킷 유실에 대비해 일정 시간 대기(TIME_WAIT) 후 종료.

7. 웹 기술 기초

URL, URI, HTTP의 기본 구조

  • URI (Uniform Resource Identifier): 인터넷상의 자원(Resource)을 식별하는 '통합 자원 식별자'임. 가장 상위의 개념임.
  • URL (Uniform Resource Locator): URI의 한 종류로, 자원이 '어디에 있는지(Location)' 그 '위치'를 구체적으로 명시함. (예: https://www.google.com/search)
  • HTTP (HyperText Transfer Protocol): L7(응용 계층) 프로토콜(실제 구현에서는 TCP 위에서 동작하는 텍스트 기반 프로토콜), 웹 브라우저(클라이언트)와 웹 서버 간에 하이퍼텍스트(HTML 등) 문서를 주고받기 위한 '규칙'임. 클라이언트의 요청(Request)서버의 응답(Response) 구조로 동작함.

웹 서비스 구조와 동작 원리

  • 일반적인 웹 서비스(예: 로그인)는 다음과 같은 구조로 동작함.
  1. 클라이언트 (Client: 웹 브라우저): 사용자가 ID/PW를 입력하고 '로그인' 버튼을 클릭하면, JavaScript가 동작하여 POST 방식의 HTTP 요청(Request)을 생성함.
  2. 웹 서버 (Web Server: 예: Nginx, Apache):
    1. 가장 앞에서 요청을 받음.
    2. 이미지, CSS, JS 파일 등 '정적 자원(Static Resource)'을 직접 처리함.
    3. 로그인 처리와 같은 '동적 요청'은 뒤쪽의 WAS로 전달(Proxy)함.
  3. WAS (Web Application Server: 예: Tomcat, Spring Boot):
    1. 웹 서버로부터 전달받은 요청을 분석함. (예: /login 요청 확인)
    2. 비즈니스 로직(로그인 로직)을 수행하기 위해 DB에 ID/PW가 맞는지 SQL 질의를 보냄.
  4. DB (Database: 예: MySQL, RDB):
    1. WAS로부터 받은 SQL을 실행하여 결과를 반환함. (예: '로그인 성공' 또는 '실패')
  5. 응답 (Response):
    1. WAS: DB 결과를 바탕으로 '로그인 성공 페이지(HTML)' 또는 '실패 메시지(JSON)'를 생성하여 웹 서버에 전달함.
    2. 웹 서버: WAS로부터 받은 응답을 최종적으로 클라이언트(브라우저)에게 전송함.
    3. 클라이언트: 응답받은 HTML을 화면에 렌더링(표시)함.